package cc.rengu.igas.channel.esb.facade;

import cc.rengu.igas.channel.esb.facade.request.*;
import cc.rengu.igas.channel.esb.facade.response.*;
import cc.rengu.igas.channel.esb.facade.result.Result;

/**
 * 本行网关支付
 *
 * @author wangcheng
 */
public interface GatewayPayService {

    /**
     * 本行借记卡网关支付
     *
     * @param gatewayDebitCardPayRequest 本行借记卡网关支付请求信息
     * @return 本行借记卡网关支付应答
     */
    Result<GatewayDebitCardPayResponse> gatewayDebitCardPay(GatewayDebitCardPayRequest gatewayDebitCardPayRequest);

    /**
     * 本行借记卡网关支付交易状态查询
     *
     * @param gatewayDebitCardPayStatusQueryRequest 本行借记卡网关支付交易状态查询请求信息
     * @return 本行借记卡网关支付交易状态查询应答
     */
    Result<GatewayDebitCardPayStatusQueryResponse> gatewayDebitCardPayStatusQuery(GatewayDebitCardPayStatusQueryRequest gatewayDebitCardPayStatusQueryRequest);

    /**
     * 本行借记卡网关支付退款
     *
     * @param gatewayDebitCardRefundRequest 本行借记卡网关支付退款请求信息
     * @return 本行借记卡网关支付退款应答
     */
    Result<GatewayDebitCardRefundResponse> gatewayDebitCardRefund(GatewayDebitCardRefundRequest gatewayDebitCardRefundRequest);

    /**
     * 本行贷记卡网关支付接口
     *
     * @param gatewayCreditCardPayRequest 本行贷记卡网关支付请求信息
     * @return 本行贷记卡网关支付应答
     */
    Result<GatewayCreditCardPayResponse> gatewayCreditCardPay(GatewayCreditCardPayRequest gatewayCreditCardPayRequest);

    /**
     * 本行贷记卡网关支付交易状态查询
     *
     * @param gatewayCreditCardPayStatusQueryRequest 本行贷记卡网关支付状态查询请求信息
     * @return 本行贷记卡网关支付状态查询应答
     */
    Result<GatewayCreditCardPayStatusQueryResponse> gatewayCreditCardPayStatusQuery(GatewayCreditCardPayStatusQueryRequest gatewayCreditCardPayStatusQueryRequest);

    /**
     * 本行贷记卡网关支付退款
     *
     * @param gatewayCreditCardRefundRequest 本行贷记卡网关支付退款请求信息
     * @return 本行贷记卡网关支付退款应答
     */
    Result<GatewayCreditCardRefundResponse> gatewayCreditCardRefund(GatewayCreditCardRefundRequest gatewayCreditCardRefundRequest);
}
